博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
飘窗原生js效果
阅读量:6280 次
发布时间:2019-06-22

本文共 4455 字,大约阅读时间需要 14 分钟。

css:

.close {            width: 30px;            height: 20px;            background: white;            position: absolute;            right: 0;            top: 0;            z-index: 999;            font-size: 12px;            text-align: center;            line-height: 20px;            cursor: pointer;            font-family: '微软雅黑';        }

  

js:【修改了一些bug】

window.onload = function () {        /*            参数            1. 创建飘窗,填写飘窗的id;            2. 选择该飘窗是否显示,true显示,false不显示,默认为false,不显示;            3. 该飘窗的配置信息, xPos,yPos          飘窗的起始位置,默认为左上角,                               imgWidth,imgHeight   飘窗的大小,默认为w: 310,h: 200,                               href                 要跳转的链接,默认不跳转,                               imgSrc               图片的链接,默认为空。         */        var fl1 = new FloatWindow('win', true, {            xPos: 100,            yPos: 100,            href: 'http://websong.wang',            imgSrc: 'https://bpic.588ku.com/art_origin_min_pic/18/07/08/02ced7cd66e3a1341391af9ceb90ec62.jpg'        });    }    var FloatWindow = function (ele, flag, config) {        flag = flag ? true : false;        this.opt = this.extend({            xPos: 0,            yPos: 0,            imgWidth: 100,            imgHeight: 100,            href: 'javascript:void(0)',            imgSrc: '',            step: 1,            height: 0,            Hoffset: 0,            Woffset: 0,            xon: 0,            yon: 0        }, config);            var html = '' +            '' +            '' +            '' +            '
关闭
' + '
'; var div = document.createElement('div'); div.innerHTML = html; if (flag) { document.body.appendChild(div); } else { return; } if (document.querySelector('#'+ele).length <= 0) { return; } this.ele = document.querySelector('#'+ele); this.interval; this.delay = 10; this.ele.querySelector('img').style['width'] = this.opt.imgWidth + 'px'; this.ele.querySelector('img').style['height']= this.opt.imgHeight + 'px'; var _self = this; this.ele.onmouseout = function () { _self.start(); } this.ele.onmouseover = function () { _self.stop(); } this.ele.onclick = function (e) { if (e.target.className === 'close') _self.stop(); document.body.removeChild(div); } changePos = function (ele, moveCfg) { width = document.documentElement.clientWidth || document.body.clientWidth; height = document.documentElement.clientHeight || document.body.clientHeight; Hoffset = ele.offsetHeight; Woffset = ele.offsetWidth; if (moveCfg.yon) { moveCfg.yPos = moveCfg.yPos + moveCfg.step; } else { moveCfg.yPos = moveCfg.yPos - moveCfg.step; } if (moveCfg.yPos < 0) { moveCfg.yon = 1; moveCfg.yPos = 0; } if (moveCfg.yPos >= (height - Hoffset)) { moveCfg.yon = 0; moveCfg.yPos = (height - Hoffset); } if (moveCfg.xon) { moveCfg.xPos = moveCfg.xPos + moveCfg.step; } else { moveCfg.xPos = moveCfg.xPos - moveCfg.step; } if (moveCfg.xPos < 0) { moveCfg.xon = 1; moveCfg.xPos = 0; } if (moveCfg.xPos >= (width - Woffset)) { moveCfg.xon = 0; moveCfg.xPos = (width - Woffset); } ele.style.left = moveCfg.xPos + document.body.scrollLeft + "px"; ele.style.top = moveCfg.yPos + document.documentElement.scrollTop + "px"; } this.start(); } FloatWindow.prototype.start = function () { var that = this; this.ele.visibility = 'visible'; this.interval = setInterval(function () { changePos(that.ele, that.opt); }, this.delay); } FloatWindow.prototype.stop = function () { clearInterval(this.interval) } FloatWindow.prototype.extend = function (o, e) { for (var key in e) { if (e[key]) { o[key] = e[key]; } } return o; }

  

转载于:https://www.cnblogs.com/webSong/p/9371634.html

你可能感兴趣的文章
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>